package priv.wangy.micro.common.constant;


import priv.wangy.micro.common.po.http.rspn.BaseListRspn;

import java.util.Arrays;

/**
 * @author 高拓
 * @since 2024/5/24 15:38
 */
public abstract class StudentDictionary {

    /**
     * 入学前学历
     */
    public interface PreEducation {
        /**
         * 初中毕业
         */
        String CZBY = "00";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("PRE_EDUCATION", Arrays.asList(
                new BaseListRspn.Field.Property(CZBY, "初中毕业")
        ));
    }

    /**
     * 学生类别
     */
    public interface StudentType {
        /**
         * 职业高中学生
         */
        String ZYGZXS = "00";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("STUDENT_TYPE", Arrays.asList(
                new BaseListRspn.Field.Property(ZYGZXS, "职业高中学生")
        ));
    }

    /**
     * 学生来源
     */
    public interface StudentSource {
        /**
         * 城镇应届
         */
        String CZYJ = "00";

        /**
         * 农村应届
         */
        String NCYJ = "01";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("SW_STUDENT_SOURCE", Arrays.asList(
                new BaseListRspn.Field.Property(CZYJ, "城镇应届"),
                new BaseListRspn.Field.Property(NCYJ, "农村应届")
        ));
    }

    /**
     * 生源类型
     */
    public interface SourceType {
        /**
         * 应届初中毕业生
         */
        String YJCZBYS = "00";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("SOURCE_TYPE", Arrays.asList(
                new BaseListRspn.Field.Property(YJCZBYS, "应届初中毕业生")
        ));
    }


    /**
     * 班级状态
     */
    public interface ClasseStatus {
        /**
         * 未入校
         */
        String OFF_SCHOOL = "00";

        /**
         * 在校
         */
        String ON_SCHOOL = "01";

        /**
         * 校外实习
         */
        String OUT_INTERNSHIP = "02";

        /**
         * 毕业
         */
        String GRADUATION = "03";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("CLASSE_STATUS", Arrays.asList(
                new BaseListRspn.Field.Property(OFF_SCHOOL, "未入校"),
                new BaseListRspn.Field.Property(ON_SCHOOL, "在校"),
                new BaseListRspn.Field.Property(OUT_INTERNSHIP, "校外实习"),
                new BaseListRspn.Field.Property(GRADUATION, "毕业")));

    }

    /**
     * 招生方式
     */
    public interface EnrollmentType {
        /**
         * 本省（市）招生
         */
        String BSSZS = "00";

        /**
         * 跨省（市）招生
         */
        String KSSZS = "01";

        /**
         * 注册入学
         */
        String ZCRX = "02";

        /**
         * 区域合作办学招生
         */
        String QYHZBXZS = "03";

        /**
         * 其它
         */
        String QT = "04";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("ENROLLMENT_TYPE", Arrays.asList(
                new BaseListRspn.Field.Property(BSSZS, "本省（市）招生"),
                new BaseListRspn.Field.Property(KSSZS, "跨省（市）招生"),
                new BaseListRspn.Field.Property(ZCRX, "注册入学"),
                new BaseListRspn.Field.Property(QYHZBXZS, "区域合作办学招生"),
                new BaseListRspn.Field.Property(QT, "其它")));
    }


    /**
     * 就读方式
     */
    public interface ReadingMode {
        /**
         * 住校
         */
        String RESIDENCY = "00";
        /**
         * 走读
         */
        String EXTERN = "01";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("READING_MODE", Arrays.asList(
                new BaseListRspn.Field.Property(RESIDENCY, "住校"),
                new BaseListRspn.Field.Property(EXTERN, "走读")));
    }


    /**
     * 升学层次
     */
    public interface AdvanceLevel {
        /**
         * 专科
         */
        String JUNIOR = "00";
        /**
         * 职业本科
         */
        String JOB_BACHELOR = "01";

        /**
         * 普通本科
         */
        String BACHELOR = "02";

        /**
         * 硕士
         */
        String MASTER = "03";

        /**
         * 其他
         */
        String OTHER = "04";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("QUALIFICATION", Arrays.asList(
                new BaseListRspn.Field.Property(JUNIOR, "专科"),
                new BaseListRspn.Field.Property(JOB_BACHELOR, "职业本科"),
                new BaseListRspn.Field.Property(BACHELOR, "普通本科")
        ));
    }

    public interface ExistType {
        BaseListRspn.Field FIELD = new BaseListRspn.Field("EXIST_TYPE", Arrays.asList(
                new BaseListRspn.Field.Property(DataDictionary.YesOrNo.YES, "有"),
                new BaseListRspn.Field.Property(DataDictionary.YesOrNo.NO, "无")));
    }

    /**
     * 获奖项目类别
     */
    public interface ProjectCategory {
        /**
         * 职业院校技能大赛
         */
        String ZYYXJN = "00";
        /**
         * 职业技能大赛
         */
        String ZYJN = "01";
        /**
         * 创新创业
         */
        String CXCY = "02";
        /**
         * 科技文化作品
         */
        String KJWHZP = "03";
        /**
         * 文明风采活动
         */
        String WMFCHD = "04";
        /**
         * 其他
         */
        String QT = "05";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("PROJECT_CATEGORY", Arrays.asList(
                new BaseListRspn.Field.Property(ZYYXJN, "职业院校技能大赛"),
                new BaseListRspn.Field.Property(ZYJN, "职业技能大赛"),
                new BaseListRspn.Field.Property(CXCY, "创新创业"),
                new BaseListRspn.Field.Property(KJWHZP, "科技文化作品"),
                new BaseListRspn.Field.Property(WMFCHD, "文明风采活动"),
                new BaseListRspn.Field.Property(QT, "其他")));
    }

    /**
     * 奖励级别
     */
    public interface RewardLevel {
        /**
         * 国家级
         */
        String COUNTRY = "00";
        /**
         * 省部级
         */
        String PROVINCE = "01";
        /**
         * 地市级
         */
        String CITY = "02";
        /**
         * 校内
         */
        String SCHOOL = "03";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("REWARD_LEVEL", Arrays.asList(
                new BaseListRspn.Field.Property(COUNTRY, "国家级"),
                new BaseListRspn.Field.Property(PROVINCE, "省部级"),
                new BaseListRspn.Field.Property(CITY, "地市级"),
                new BaseListRspn.Field.Property(SCHOOL, "校内")));

    }


    /**
     * 奖助种类
     */
    public interface GrantProjectType {
        /**
         * 奖学金
         */
        String SCHOLARSHIP = "00";
        /**
         * 助学金
         */
        String GRANT = "01";
        /**
         * 助学贷款
         */
        String LOAN = "02";
        /**
         * 勤工俭学
         */
        String WORK_STUDY = "03";
        /**
         * 困难补助
         */
        String DIFFICULTY = "04";
        /**
         * 减免学杂费
         */
        String TUITION_REDUCTION = "05";
        /**
         * 其他
         */
        String OTHER = "06";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("GRANT_PROJECT_TYPE", Arrays.asList(
                new BaseListRspn.Field.Property(SCHOLARSHIP, "奖学金"),
                new BaseListRspn.Field.Property(GRANT, "助学金"),
                new BaseListRspn.Field.Property(LOAN, "助学贷款"),
                new BaseListRspn.Field.Property(WORK_STUDY, "勤工俭学"),
                new BaseListRspn.Field.Property(DIFFICULTY, "困难补助"),
                new BaseListRspn.Field.Property(TUITION_REDUCTION, "减免学杂费"),
                new BaseListRspn.Field.Property(OTHER, "其他")));

    }

    /**
     * 资助单位
     */
    public interface FundingUnit {
        /**
         * 国家
         */
        String COUNTRY = "00";
        /**
         * 省部
         */
        String PROVINCE = "01";
        /**
         * 地市
         */
        String CITY = "02";
        /**
         * 区县
         */
        String AREA = "03";
        /**
         * 学校
         */
        String SCHOOL = "04";
        /**
         * 企业
         */
        String ENTERPRISE = "05";
        /**
         * 个人
         */
        String PERSONAL = "06";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("FUNDING_UNIT", Arrays.asList(
                new BaseListRspn.Field.Property(COUNTRY, "国家"),
                new BaseListRspn.Field.Property(PROVINCE, "省部"),
                new BaseListRspn.Field.Property(CITY, "地市"),
                new BaseListRspn.Field.Property(AREA, "区县"),
                new BaseListRspn.Field.Property(SCHOOL, "学校"),
                new BaseListRspn.Field.Property(ENTERPRISE, "企业"),
                new BaseListRspn.Field.Property(PERSONAL, "个人")));
    }

    /**
     * 经费来源
     */
    public interface FinancialSources {
        /**
         * 中央财政
         */
        String CENTER_FINANCE = "10";
        /**
         * 省级财政
         */
        String P_FINANCE = "11";

        /**
         * 市级财政
         */
        String C_FINANCE = "12";

        /**
         * 县级财政
         */
        String X_FINANCE = "13";
        /**
         * 贷款/金融机构
         */
        String LOAN = "01";
        /**
         * 自筹资金/学校事业收入提取
         */
        String SELF = "02";
        /**
         * 捐助/企事业单位、社会或个人捐赠
         */
        String DONATION = "03";
        /**
         * 集资
         */
        String RAISING = "04";
        /**
         * 其他
         */
        String OTHER = "05";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("FINANCIAL_SOURCES", Arrays.asList(
                new BaseListRspn.Field.Property(CENTER_FINANCE, "中央财政"),
                new BaseListRspn.Field.Property(P_FINANCE, "省级财政"),
                new BaseListRspn.Field.Property(C_FINANCE, "市级财政"),
                new BaseListRspn.Field.Property(X_FINANCE, "县级财政"),
                new BaseListRspn.Field.Property(LOAN, "贷款"),
                new BaseListRspn.Field.Property(SELF, "学校事业收入提取"),
                new BaseListRspn.Field.Property(DONATION, "企事业单位、社会或个人捐赠"),
                new BaseListRspn.Field.Property(OTHER, "其他")));
    }


    /**
     * 实习场所类型
     */
    public interface InternshipPlaceCategory {
        /**
         * 国有企业
         */
        String STATE_OWNED_ENTERPRISE = "00";
        /**
         * 集体企业
         */
        String COLLECTIVE_ENTERPRISE = "01";
        /**
         * 股份制企业
         */
        String STOCK_HOLDING_ENTERPRISE = "02";
        /**
         * 私营企业
         */
        String PRIVATE_ENTERPRISE = "03";
        /**
         * 外商投资企业
         */
        String FOREIGN_INVESTMENT_ENTERPRISE = "04";
        /**
         * 合资企业
         */
        String JOINT_VENTURE_ENTERPRISE = "05";
        /**
         * 社会组织
         */
        String SOCIAL_ORGANIZATION = "06";
        /**
         * 政府机关
         */
        String GOVERNMENT_AGENCY = "07";
        /**
         * 学校
         */
        String SCHOOL = "08";
        /**
         * 其他
         */
        String OTHER = "09";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("INTERNSHIP_PLACE_CATEGORY", Arrays.asList(
                new BaseListRspn.Field.Property(STATE_OWNED_ENTERPRISE, "国有企业"),
                new BaseListRspn.Field.Property(COLLECTIVE_ENTERPRISE, "集体企业"),
                new BaseListRspn.Field.Property(STOCK_HOLDING_ENTERPRISE, "股份制企业"),
                new BaseListRspn.Field.Property(PRIVATE_ENTERPRISE, "私营企业"),
                new BaseListRspn.Field.Property(FOREIGN_INVESTMENT_ENTERPRISE, "外商投资企业"),
                new BaseListRspn.Field.Property(JOINT_VENTURE_ENTERPRISE, "合资企业"),
                new BaseListRspn.Field.Property(SOCIAL_ORGANIZATION, "社会组织"),
                new BaseListRspn.Field.Property(GOVERNMENT_AGENCY, "政府机关"),
                new BaseListRspn.Field.Property(SCHOOL, "学校"),
                new BaseListRspn.Field.Property(OTHER, "其他")));
    }

    /**
     * 住宿安排
     */
    public interface Accommodation {
        /**
         * 学生自主安排
         */
        String STUDENT_ARRANGE = "00";
        /**
         * 学校统一安排
         */
        String SCHOOL_ARRANGE = "01";
        /**
         * 实习单位统一安排
         */
        String INTERNSHIP_UNIT_ARRANGE = "02";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("ACCOMMODATION", Arrays.asList(
                new BaseListRspn.Field.Property(STUDENT_ARRANGE, "学生自主安排"),
                new BaseListRspn.Field.Property(SCHOOL_ARRANGE, "学校统一安排"),
                new BaseListRspn.Field.Property(INTERNSHIP_UNIT_ARRANGE, "实习单位统一安排")));
    }

    /**
     * 实习去向
     */
    public interface InternshipDestination {
        /**
         * 本市
         */
        String LOCAL = "00";
        /**
         * 省内
         */
        String PROVINCE = "01";
        /**
         * 省外
         */
        String OUTSIDE_PROVINCE = "02";
        /**
         * 国外
         */
        String FOREIGN = "03";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("INTERNSHIP_DESTINATION", Arrays.asList(
                new BaseListRspn.Field.Property(LOCAL, "本市"),
                new BaseListRspn.Field.Property(PROVINCE, "省内"),
                new BaseListRspn.Field.Property(OUTSIDE_PROVINCE, "省外"),
                new BaseListRspn.Field.Property(FOREIGN, "国外")));
    }

    /**
     * 备案情况
     */
    public interface RecordStatus {
        /**
         * 通过省级备案
         */
        String PASS_PROVINCE_RECORD = "00";
        /**
         * 通过市级备案
         */
        String PASS_CITY_RECORD = "01";
        /**
         * 未通过备案
         */
        String NOT_PASS_RECORD = "02";
        /**
         * 未备案
         */
        String NOT_RECORD = "03";
        BaseListRspn.Field FIELD = new BaseListRspn.Field("RECORD_STATUS", Arrays.asList(
                new BaseListRspn.Field.Property(PASS_PROVINCE_RECORD, "通过省级备案"),
                new BaseListRspn.Field.Property(PASS_CITY_RECORD, "通过市级备案"),
                new BaseListRspn.Field.Property(NOT_PASS_RECORD, "未通过备案"),
                new BaseListRspn.Field.Property(NOT_RECORD, "未备案")));
    }

    /**
     * 购买保险种类
     */
    public interface InsuranceType {
        /**
         * 学生实习责任保险
         */
        String LIABILITY_INSURANCE = "00";
        /**
         * 意外险
         */
        String ACCIDENT_INSURANCE = "01";
        /**
         * 其他保险
         */
        String OTHER_INSURANCE = "02";

        String WU = "03";
        BaseListRspn.Field FIELD = new BaseListRspn.Field("INSURANCE_TYPE", Arrays.asList(
                new BaseListRspn.Field.Property(LIABILITY_INSURANCE, "学生实习责任保险"),
                new BaseListRspn.Field.Property(ACCIDENT_INSURANCE, "意外险"),
                new BaseListRspn.Field.Property(OTHER_INSURANCE, "其他保险"),
                new BaseListRspn.Field.Property(WU, "未购买")));
    }

    /**
     * 购买保险方
     */
    public interface InsuranceCompany {
        /**
         * 学校
         */
        String SCHOOL = "00";
        /**
         * 企业
         */
        String ENTERPRISE = "01";
        /**
         * 其他
         */
        String OTHER = "02";
        BaseListRspn.Field FIELD = new BaseListRspn.Field("INSURANCE_COMPANY", Arrays.asList(
                new BaseListRspn.Field.Property(SCHOOL, "学校"),
                new BaseListRspn.Field.Property(ENTERPRISE, "企业"),
                new BaseListRspn.Field.Property(OTHER, "其他")));
    }


    /**
     * 专业对口程度
     */
    public interface ProfessionalDegree {
        /**
         * 基本对口
         */
        String DKT = "00";
        /**
         * 非常对口
         */
        String VERY_COMPATIBLE = "01";

        /**
         * 不对口
         */
        String BDK = "02";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("PROFESSIONAL_DEGREE", Arrays.asList(
                new BaseListRspn.Field.Property(DKT, "基本对口"),
                new BaseListRspn.Field.Property(VERY_COMPATIBLE, "对口"),
                new BaseListRspn.Field.Property(BDK, "专业不对口")));
    }


    /**
     * 实习项目类型
     */
    public interface InternshipProgramType {
        /**
         * 认知实习
         */
        String COGNITIVE_PRACTICE = "00";
        /**
         * 岗位实习
         */
        String JOB_PRACTICE = "01";
        BaseListRspn.Field FIELD = new BaseListRspn.Field("INTERNSHIP_PROGRAM_TYPE", Arrays.asList(
                new BaseListRspn.Field.Property(COGNITIVE_PRACTICE, "认知实习"),
                new BaseListRspn.Field.Property(JOB_PRACTICE, "岗位实习")));
    }

    /**
     * 就业渠道
     */
    public interface EmploymentChannel {
        /**
         * 学校推荐
         */
        String XX = "00";

        /**
         * 中介介绍
         */
        String ZJ = "01";

        /**
         * 其他渠道
         */
        String QT = "02";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("EMPLOYMENT_CHANNEL", Arrays.asList(
                new BaseListRspn.Field.Property(XX, "学校推荐"),
                new BaseListRspn.Field.Property(ZJ, "中介介绍"),
                new BaseListRspn.Field.Property(QT, "其他渠道")));
    }

    /**
     * 合同或协议签订情况
     */
    public interface ContractSigned {
        /**
         * 1年及以内
         */
        String ONE_YEAR = "00";

        /**
         * 1-2(含)年
         */
        String ONE_TO_TWO_YEAR = "01";

        /**
         * 2-3(含)年
         */
        String TWO_TO_THREE_YEAR = "02";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("CONTRACT_SIGNED", Arrays.asList(
                new BaseListRspn.Field.Property(ONE_YEAR, "1年及以内"),
                new BaseListRspn.Field.Property(ONE_TO_TWO_YEAR, "1-2(含)年"),
                new BaseListRspn.Field.Property(TWO_TO_THREE_YEAR, "2-3(含)年")));
    }


    /**
     * 奖助学金审批状态
     */
    public interface ApprovalStatus {
        /**
         * 待审核
         */
        String REVIEW = "00";
        /**
         * 未通过
         */
        String REJECTED = "01";
        /**
         * 代发放
         */
        String DISTRIBUTION = "02";
        /**
         * 已发放
         */
        String ISSUED = "03";

        BaseListRspn.Field FIELD = new BaseListRspn.Field("APPROVAL_STATUS", Arrays.asList(
                new BaseListRspn.Field.Property(REVIEW, "待审核"),
                new BaseListRspn.Field.Property(REJECTED, "未通过"),
                new BaseListRspn.Field.Property(DISTRIBUTION, "待发放"),
                new BaseListRspn.Field.Property(ISSUED, "已发放")));

    }

    /**
     * 社团
     */
    public interface Community {
        /**
         * 社团类型
         */
        public interface Type {

            String KXJS = "00";
            String WYTY = "01";
            String LLXX = "02";
            String GYFW = "03";

            BaseListRspn.Field FIELD = new BaseListRspn.Field("COMMUNITY_TYPE", Arrays.asList(
                    new BaseListRspn.Field.Property(KXJS, "科学技术"),
                    new BaseListRspn.Field.Property(WYTY, "文艺体育"),
                    new BaseListRspn.Field.Property(LLXX, "理论学习"),
                    new BaseListRspn.Field.Property(GYFW, "公益服务")));


        }

        public interface HeaderType {
            String XS = "00";
            String LS = "01";

            BaseListRspn.Field FIELD = new BaseListRspn.Field("HEADER_TYPE", Arrays.asList(
                    new BaseListRspn.Field.Property(XS, "学生"),
                    new BaseListRspn.Field.Property(LS, "老师")));
        }
    }

    /**
     * 实习
     */
    public interface InternPrj {
        public interface ReportType {
            String YB = "00";
            String ZHB = "01";

            BaseListRspn.Field FIELD = new BaseListRspn.Field("REPORT_TYPE", Arrays.asList(
                    new BaseListRspn.Field.Property(YB, "月报"),
                    new BaseListRspn.Field.Property(ZHB, "综合报告")));
        }
    }


}

